﻿// Knockout JavaScript library v3.0.0
// (c) Steven Sanderson - http://knockoutjs.com/
// License: MIT (http://www.opensource.org/licenses/mit-license.php)

(function () {
    (function (q) {
        var y = this || (0, eval)("this"), w = y.document, K = y.navigator, u = y.jQuery, B = y.JSON; (function (q) { "function" === typeof require && "object" === typeof exports && "object" === typeof module ? q(module.exports || exports) : "function" === typeof define && define.amd ? define(["exports"], q) : q(y.ko = {}) })(function (F) {
            function G(a, c) { return null === a || typeof a in N ? a === c : !1 } function H(b, c, d, e) {
                a.d[b] = {
                    init: function (b) { a.a.f.set(b, L, {}); return { controlsDescendantBindings: !0 } }, update: function (b, h, k, m, f) {
                        k = a.a.f.get(b, L); h = a.a.c(h());
                        m = !d !== !h; var p = !k.ob; if (p || c || m !== k.Db) p && (k.ob = a.a.Ya(a.e.childNodes(b), !0)), m ? (p || a.e.S(b, a.a.Ya(k.ob)), a.Ta(e ? e(f, h) : f, b)) : a.e.Z(b), k.Db = m
                    }
                }; a.g.Y[b] = !1; a.e.P[b] = !0
            } var a = "undefined" !== typeof F ? F : {}; a.b = function (b, c) { for (var d = b.split("."), e = a, g = 0; g < d.length - 1; g++) e = e[d[g]]; e[d[d.length - 1]] = c }; a.s = function (a, c, d) { a[c] = d }; a.version = "3.0.0"; a.b("version", a.version); a.a = function () {
                function b(a, b) { for (var f in a) a.hasOwnProperty(f) && b(f, a[f]) } function c(k, b) {
                    if ("input" !== a.a.v(k) || !k.type || "click" !=
                    b.toLowerCase()) return !1; var f = k.type; return "checkbox" == f || "radio" == f
                } var d = {}, e = {}; d[K && /Firefox\/2/i.test(K.userAgent) ? "KeyboardEvent" : "UIEvents"] = ["keyup", "keydown", "keypress"]; d.MouseEvents = "click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave".split(" "); b(d, function (a, b) { if (b.length) for (var f = 0, c = b.length; f < c; f++) e[b[f]] = a }); var g = { propertychange: !0 }, h = w && function () {
                    for (var a = 3, b = w.createElement("div"), f = b.getElementsByTagName("i") ; b.innerHTML = "\x3c!--[if gt IE " +
                    ++a + "]><i></i><![endif]--\x3e", f[0];); return 4 < a ? a : q
                }(); return {
                    $a: ["authenticity_token", /^__RequestVerificationToken(_.*)?$/], n: function (a, b) { for (var f = 0, c = a.length; f < c; f++) b(a[f]) }, l: function (a, b) { if ("function" == typeof Array.prototype.indexOf) return Array.prototype.indexOf.call(a, b); for (var f = 0, c = a.length; f < c; f++) if (a[f] === b) return f; return -1 }, Ua: function (a, b, f) { for (var c = 0, d = a.length; c < d; c++) if (b.call(f, a[c])) return a[c]; return null }, ia: function (b, c) { var f = a.a.l(b, c); 0 <= f && b.splice(f, 1) }, Va: function (b) {
                        b =
                        b || []; for (var c = [], f = 0, d = b.length; f < d; f++) 0 > a.a.l(c, b[f]) && c.push(b[f]); return c
                    }, ha: function (a, b) { a = a || []; for (var f = [], c = 0, d = a.length; c < d; c++) f.push(b(a[c])); return f }, ga: function (a, b) { a = a || []; for (var f = [], c = 0, d = a.length; c < d; c++) b(a[c]) && f.push(a[c]); return f }, X: function (a, b) { if (b instanceof Array) a.push.apply(a, b); else for (var f = 0, c = b.length; f < c; f++) a.push(b[f]); return a }, V: function (b, c, f) { var d = a.a.l(a.a.Ha(b), c); 0 > d ? f && b.push(c) : f || b.splice(d, 1) }, extend: function (a, b) {
                        if (b) for (var f in b) b.hasOwnProperty(f) &&
                        (a[f] = b[f]); return a
                    }, K: b, Da: function (a, b) { if (!a) return a; var f = {}, c; for (c in a) a.hasOwnProperty(c) && (f[c] = b(a[c], c, a)); return f }, wa: function (b) { for (; b.firstChild;) a.removeNode(b.firstChild) }, Vb: function (b) { b = a.a.Q(b); for (var c = w.createElement("div"), f = 0, d = b.length; f < d; f++) c.appendChild(a.L(b[f])); return c }, Ya: function (b, c) { for (var f = 0, d = b.length, e = []; f < d; f++) { var g = b[f].cloneNode(!0); e.push(c ? a.L(g) : g) } return e }, S: function (b, c) { a.a.wa(b); if (c) for (var f = 0, d = c.length; f < d; f++) b.appendChild(c[f]) }, nb: function (b,
                    c) { var f = b.nodeType ? [b] : b; if (0 < f.length) { for (var d = f[0], e = d.parentNode, g = 0, n = c.length; g < n; g++) e.insertBefore(c[g], d); g = 0; for (n = f.length; g < n; g++) a.removeNode(f[g]) } }, $: function (a, b) { if (a.length) { for (b = 8 === b.nodeType && b.parentNode || b; a.length && a[0].parentNode !== b;) a.splice(0, 1); if (1 < a.length) { var f = a[0], c = a[a.length - 1]; for (a.length = 0; f !== c;) if (a.push(f), f = f.nextSibling, !f) return; a.push(c) } } return a }, qb: function (a, b) { 7 > h ? a.setAttribute("selected", b) : a.selected = b }, la: function (a) {
                        return null === a || a ===
                        q ? "" : a.trim ? a.trim() : a.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g, "")
                    }, ec: function (b, c) { for (var f = [], d = (b || "").split(c), e = 0, g = d.length; e < g; e++) { var n = a.a.la(d[e]); "" !== n && f.push(n) } return f }, ac: function (a, b) { a = a || ""; return b.length > a.length ? !1 : a.substring(0, b.length) === b }, Gb: function (a, b) {
                        if (a === b) return !0; if (11 === a.nodeType) return !1; if (b.contains) return b.contains(3 === a.nodeType ? a.parentNode : a); if (b.compareDocumentPosition) return 16 == (b.compareDocumentPosition(a) & 16); for (; a && a != b;) a = a.parentNode;
                        return !!a
                    }, va: function (b) { return a.a.Gb(b, b.ownerDocument.documentElement) }, Ra: function (b) { return !!a.a.Ua(b, a.a.va) }, v: function (a) { return a && a.tagName && a.tagName.toLowerCase() }, r: function (b, d, f) {
                        var e = h && g[d]; if (e || "undefined" == typeof u) if (e || "function" != typeof b.addEventListener) if ("undefined" != typeof b.attachEvent) { var s = function (a) { f.call(b, a) }, l = "on" + d; b.attachEvent(l, s); a.a.C.ea(b, function () { b.detachEvent(l, s) }) } else throw Error("Browser doesn't support addEventListener or attachEvent"); else b.addEventListener(d,
                        f, !1); else { if (c(b, d)) { var n = f; f = function (a, b) { var f = this.checked; b && (this.checked = !0 !== b.Ab); n.call(this, a); this.checked = f } } u(b).bind(d, f) }
                    }, da: function (a, b) {
                        if (!a || !a.nodeType) throw Error("element must be a DOM node when calling triggerEvent"); if ("undefined" != typeof u) { var f = []; c(a, b) && f.push({ Ab: a.checked }); u(a).trigger(b, f) } else if ("function" == typeof w.createEvent) if ("function" == typeof a.dispatchEvent) f = w.createEvent(e[b] || "HTMLEvents"), f.initEvent(b, !0, !0, y, 0, 0, 0, 0, 0, !1, !1, !1, !1, 0, a), a.dispatchEvent(f);
                        else throw Error("The supplied element doesn't support dispatchEvent"); else if ("undefined" != typeof a.fireEvent) c(a, b) && (a.checked = !0 !== a.checked), a.fireEvent("on" + b); else throw Error("Browser doesn't support triggering events");
                    }, c: function (b) { return a.M(b) ? b() : b }, Ha: function (b) { return a.M(b) ? b.t() : b }, ma: function (b, c, f) { if (c) { var d = /\S+/g, e = b.className.match(d) || []; a.a.n(c.match(d), function (b) { a.a.V(e, b, f) }); b.className = e.join(" ") } }, Ma: function (b, c) {
                        var f = a.a.c(c); if (null === f || f === q) f = ""; var d = a.e.firstChild(b);
                        !d || 3 != d.nodeType || a.e.nextSibling(d) ? a.e.S(b, [w.createTextNode(f)]) : d.data = f; a.a.Jb(b)
                    }, pb: function (a, b) { a.name = b; if (7 >= h) try { a.mergeAttributes(w.createElement("<input name='" + a.name + "'/>"), !1) } catch (f) { } }, Jb: function (a) { 9 <= h && (a = 1 == a.nodeType ? a : a.parentNode, a.style && (a.style.zoom = a.style.zoom)) }, Hb: function (a) { if (h) { var b = a.style.width; a.style.width = 0; a.style.width = b } }, Zb: function (b, c) { b = a.a.c(b); c = a.a.c(c); for (var f = [], d = b; d <= c; d++) f.push(d); return f }, Q: function (a) {
                        for (var b = [], c = 0, d = a.length; c <
                        d; c++) b.push(a[c]); return b
                    }, cc: 6 === h, dc: 7 === h, ja: h, ab: function (b, c) { for (var f = a.a.Q(b.getElementsByTagName("input")).concat(a.a.Q(b.getElementsByTagName("textarea"))), d = "string" == typeof c ? function (a) { return a.name === c } : function (a) { return c.test(a.name) }, e = [], g = f.length - 1; 0 <= g; g--) d(f[g]) && e.push(f[g]); return e }, Wb: function (b) { return "string" == typeof b && (b = a.a.la(b)) ? B && B.parse ? B.parse(b) : (new Function("return " + b))() : null }, Na: function (b, c, f) {
                        if (!B || !B.stringify) throw Error("Cannot find JSON.stringify(). Some browsers (e.g., IE < 8) don't support it natively, but you can overcome this by adding a script reference to json2.js, downloadable from http://www.json.org/json2.js");
                        return B.stringify(a.a.c(b), c, f)
                    }, Xb: function (c, d, f) {
                        f = f || {}; var e = f.params || {}, g = f.includeFields || this.$a, h = c; if ("object" == typeof c && "form" === a.a.v(c)) for (var h = c.action, n = g.length - 1; 0 <= n; n--) for (var r = a.a.ab(c, g[n]), v = r.length - 1; 0 <= v; v--) e[r[v].name] = r[v].value; d = a.a.c(d); var t = w.createElement("form"); t.style.display = "none"; t.action = h; t.method = "post"; for (var E in d) c = w.createElement("input"), c.name = E, c.value = a.a.Na(a.a.c(d[E])), t.appendChild(c); b(e, function (a, b) {
                            var c = w.createElement("input"); c.name =
                            a; c.value = b; t.appendChild(c)
                        }); w.body.appendChild(t); f.submitter ? f.submitter(t) : t.submit(); setTimeout(function () { t.parentNode.removeChild(t) }, 0)
                    }
                }
            }(); a.b("utils", a.a); a.b("utils.arrayForEach", a.a.n); a.b("utils.arrayFirst", a.a.Ua); a.b("utils.arrayFilter", a.a.ga); a.b("utils.arrayGetDistinctValues", a.a.Va); a.b("utils.arrayIndexOf", a.a.l); a.b("utils.arrayMap", a.a.ha); a.b("utils.arrayPushAll", a.a.X); a.b("utils.arrayRemoveItem", a.a.ia); a.b("utils.extend", a.a.extend); a.b("utils.fieldsIncludedWithJsonPost",
            a.a.$a); a.b("utils.getFormFields", a.a.ab); a.b("utils.peekObservable", a.a.Ha); a.b("utils.postJson", a.a.Xb); a.b("utils.parseJson", a.a.Wb); a.b("utils.registerEventHandler", a.a.r); a.b("utils.stringifyJson", a.a.Na); a.b("utils.range", a.a.Zb); a.b("utils.toggleDomNodeCssClass", a.a.ma); a.b("utils.triggerEvent", a.a.da); a.b("utils.unwrapObservable", a.a.c); a.b("utils.objectForEach", a.a.K); a.b("utils.addOrRemoveItem", a.a.V); a.b("unwrap", a.a.c); Function.prototype.bind || (Function.prototype.bind = function (a) {
                var c =
                this, d = Array.prototype.slice.call(arguments); a = d.shift(); return function () { return c.apply(a, d.concat(Array.prototype.slice.call(arguments))) }
            }); a.a.f = new function () {
                function a(b, h) { var k = b[d]; if (!k || "null" === k || !e[k]) { if (!h) return q; k = b[d] = "ko" + c++; e[k] = {} } return e[k] } var c = 0, d = "__ko__" + (new Date).getTime(), e = {}; return {
                    get: function (c, d) { var e = a(c, !1); return e === q ? q : e[d] }, set: function (c, d, e) { if (e !== q || a(c, !1) !== q) a(c, !0)[d] = e }, clear: function (a) { var b = a[d]; return b ? (delete e[b], a[d] = null, !0) : !1 }, D: function () {
                        return c++ +
                        d
                    }
                }
            }; a.b("utils.domData", a.a.f); a.b("utils.domData.clear", a.a.f.clear); a.a.C = new function () {
                function b(b, c) { var e = a.a.f.get(b, d); e === q && c && (e = [], a.a.f.set(b, d, e)); return e } function c(d) { var e = b(d, !1); if (e) for (var e = e.slice(0), m = 0; m < e.length; m++) e[m](d); a.a.f.clear(d); "function" == typeof u && "function" == typeof u.cleanData && u.cleanData([d]); if (g[d.nodeType]) for (e = d.firstChild; d = e;) e = d.nextSibling, 8 === d.nodeType && c(d) } var d = a.a.f.D(), e = { 1: !0, 8: !0, 9: !0 }, g = { 1: !0, 9: !0 }; return {
                    ea: function (a, c) {
                        if ("function" !=
                        typeof c) throw Error("Callback must be a function"); b(a, !0).push(c)
                    }, mb: function (c, e) { var g = b(c, !1); g && (a.a.ia(g, e), 0 == g.length && a.a.f.set(c, d, q)) }, L: function (b) { if (e[b.nodeType] && (c(b), g[b.nodeType])) { var d = []; a.a.X(d, b.getElementsByTagName("*")); for (var m = 0, f = d.length; m < f; m++) c(d[m]) } return b }, removeNode: function (b) { a.L(b); b.parentNode && b.parentNode.removeChild(b) }
                }
            }; a.L = a.a.C.L; a.removeNode = a.a.C.removeNode; a.b("cleanNode", a.L); a.b("removeNode", a.removeNode); a.b("utils.domNodeDisposal", a.a.C);
            a.b("utils.domNodeDisposal.addDisposeCallback", a.a.C.ea); a.b("utils.domNodeDisposal.removeDisposeCallback", a.a.C.mb); (function () {
                a.a.Fa = function (b) {
                    var c; if ("undefined" != typeof u) if (u.parseHTML) c = u.parseHTML(b) || []; else { if ((c = u.clean([b])) && c[0]) { for (b = c[0]; b.parentNode && 11 !== b.parentNode.nodeType;) b = b.parentNode; b.parentNode && b.parentNode.removeChild(b) } } else {
                        var d = a.a.la(b).toLowerCase(); c = w.createElement("div"); d = d.match(/^<(thead|tbody|tfoot)/) && [1, "<table>", "</table>"] || !d.indexOf("<tr") && [2,
                        "<table><tbody>", "</tbody></table>"] || (!d.indexOf("<td") || !d.indexOf("<th")) && [3, "<table><tbody><tr>", "</tr></tbody></table>"] || [0, "", ""]; b = "ignored<div>" + d[1] + b + d[2] + "</div>"; for ("function" == typeof y.innerShiv ? c.appendChild(y.innerShiv(b)) : c.innerHTML = b; d[0]--;) c = c.lastChild; c = a.a.Q(c.lastChild.childNodes)
                    } return c
                }; a.a.Ka = function (b, c) { a.a.wa(b); c = a.a.c(c); if (null !== c && c !== q) if ("string" != typeof c && (c = c.toString()), "undefined" != typeof u) u(b).html(c); else for (var d = a.a.Fa(c), e = 0; e < d.length; e++) b.appendChild(d[e]) }
            })();
            a.b("utils.parseHtmlFragment", a.a.Fa); a.b("utils.setHtml", a.a.Ka); a.u = function () {
                function b(c, e) { if (c) if (8 == c.nodeType) { var g = a.u.jb(c.nodeValue); null != g && e.push({ Fb: c, Tb: g }) } else if (1 == c.nodeType) for (var g = 0, h = c.childNodes, k = h.length; g < k; g++) b(h[g], e) } var c = {}; return {
                    Ca: function (a) {
                        if ("function" != typeof a) throw Error("You can only pass a function to ko.memoization.memoize()"); var b = (4294967296 * (1 + Math.random()) | 0).toString(16).substring(1) + (4294967296 * (1 + Math.random()) | 0).toString(16).substring(1);
                        c[b] = a; return "\x3c!--[ko_memo:" + b + "]--\x3e"
                    }, ub: function (a, b) { var g = c[a]; if (g === q) throw Error("Couldn't find any memo with ID " + a + ". Perhaps it's already been unmemoized."); try { return g.apply(null, b || []), !0 } finally { delete c[a] } }, vb: function (c, e) { var g = []; b(c, g); for (var h = 0, k = g.length; h < k; h++) { var m = g[h].Fb, f = [m]; e && a.a.X(f, e); a.u.ub(g[h].Tb, f); m.nodeValue = ""; m.parentNode && m.parentNode.removeChild(m) } }, jb: function (a) { return (a = a.match(/^\[ko_memo\:(.*?)\]$/)) ? a[1] : null }
                }
            }(); a.b("memoization", a.u); a.b("memoization.memoize",
            a.u.Ca); a.b("memoization.unmemoize", a.u.ub); a.b("memoization.parseMemoText", a.u.jb); a.b("memoization.unmemoizeDomNodeAndDescendants", a.u.vb); a.xa = { throttle: function (b, c) { b.throttleEvaluation = c; var d = null; return a.h({ read: b, write: function (a) { clearTimeout(d); d = setTimeout(function () { b(a) }, c) } }) }, notify: function (a, c) { a.equalityComparer = "always" == c ? null : G } }; var N = { undefined: 1, "boolean": 1, number: 1, string: 1 }; a.b("extenders", a.xa); a.sb = function (b, c, d) {
                this.target = b; this.qa = c; this.Eb = d; a.s(this, "dispose",
                this.B)
            }; a.sb.prototype.B = function () { this.Qb = !0; this.Eb() }; a.ca = function () { this.F = {}; a.a.extend(this, a.ca.fn); a.s(this, "subscribe", this.T); a.s(this, "extend", this.extend); a.s(this, "getSubscriptionsCount", this.Lb) }; var I = "change"; a.ca.fn = {
                T: function (b, c, d) { d = d || I; var e = new a.sb(this, c ? b.bind(c) : b, function () { a.a.ia(this.F[d], e) }.bind(this)); this.F[d] || (this.F[d] = []); this.F[d].push(e); return e }, notifySubscribers: function (b, c) {
                    c = c || I; if (this.cb(c)) try {
                        a.i.Wa(); for (var d = this.F[c].slice(0), e = 0, g; g = d[e]; ++e) g &&
                        !0 !== g.Qb && g.qa(b)
                    } finally { a.i.end() }
                }, cb: function (a) { return this.F[a] && this.F[a].length }, Lb: function () { var b = 0; a.a.K(this.F, function (a, d) { b += d.length }); return b }, extend: function (b) { var c = this; b && a.a.K(b, function (b, e) { var g = a.xa[b]; "function" == typeof g && (c = g(c, e) || c) }); return c }
            }; a.fb = function (a) { return null != a && "function" == typeof a.T && "function" == typeof a.notifySubscribers }; a.b("subscribable", a.ca); a.b("isSubscribable", a.fb); a.i = function () {
                var b = []; return {
                    Wa: function (a) { b.push(a && { qa: a, Za: [] }) },
                    end: function () { b.pop() }, lb: function (c) { if (!a.fb(c)) throw Error("Only subscribable things can act as dependencies"); if (0 < b.length) { var d = b[b.length - 1]; !d || 0 <= a.a.l(d.Za, c) || (d.Za.push(c), d.qa(c)) } }, p: function (a, d, e) { try { return b.push(null), a.apply(d, e || []) } finally { b.pop() } }
                }
            }(); a.q = function (b) {
                function c() { if (0 < arguments.length) return c.equalityComparer && c.equalityComparer(d, arguments[0]) || (c.O(), d = arguments[0], c.N()), this; a.i.lb(c); return d } var d = b; a.ca.call(c); c.t = function () { return d }; c.N = function () { c.notifySubscribers(d) };
                c.O = function () { c.notifySubscribers(d, "beforeChange") }; a.a.extend(c, a.q.fn); a.s(c, "peek", c.t); a.s(c, "valueHasMutated", c.N); a.s(c, "valueWillMutate", c.O); return c
            }; a.q.fn = { equalityComparer: G }; var C = a.q.Yb = "__ko_proto__"; a.q.fn[C] = a.q; a.ya = function (b, c) { return null === b || b === q || b[C] === q ? !1 : b[C] === c ? !0 : a.ya(b[C], c) }; a.M = function (b) { return a.ya(b, a.q) }; a.gb = function (b) { return "function" == typeof b && b[C] === a.q || "function" == typeof b && b[C] === a.h && b.Nb ? !0 : !1 }; a.b("observable", a.q); a.b("isObservable", a.M); a.b("isWriteableObservable",
            a.gb); a.ba = function (b) { b = b || []; if ("object" != typeof b || !("length" in b)) throw Error("The argument passed when initializing an observable array must be an array, or null, or undefined."); b = a.q(b); a.a.extend(b, a.ba.fn); return b.extend({ trackArrayChanges: !0 }) }; a.ba.fn = {
                remove: function (b) { for (var c = this.t(), d = [], e = "function" != typeof b || a.M(b) ? function (a) { return a === b } : b, g = 0; g < c.length; g++) { var h = c[g]; e(h) && (0 === d.length && this.O(), d.push(h), c.splice(g, 1), g--) } d.length && this.N(); return d }, removeAll: function (b) {
                    if (b ===
                    q) { var c = this.t(), d = c.slice(0); this.O(); c.splice(0, c.length); this.N(); return d } return b ? this.remove(function (c) { return 0 <= a.a.l(b, c) }) : []
                }, destroy: function (b) { var c = this.t(), d = "function" != typeof b || a.M(b) ? function (a) { return a === b } : b; this.O(); for (var e = c.length - 1; 0 <= e; e--) d(c[e]) && (c[e]._destroy = !0); this.N() }, destroyAll: function (b) { return b === q ? this.destroy(function () { return !0 }) : b ? this.destroy(function (c) { return 0 <= a.a.l(b, c) }) : [] }, indexOf: function (b) { var c = this(); return a.a.l(c, b) }, replace: function (a,
                c) { var d = this.indexOf(a); 0 <= d && (this.O(), this.t()[d] = c, this.N()) }
            }; a.a.n("pop push reverse shift sort splice unshift".split(" "), function (b) { a.ba.fn[b] = function () { var a = this.t(); this.O(); this.Xa(a, b, arguments); a = a[b].apply(a, arguments); this.N(); return a } }); a.a.n(["slice"], function (b) { a.ba.fn[b] = function () { var a = this(); return a[b].apply(a, arguments) } }); a.b("observableArray", a.ba); var J = "arrayChange"; a.xa.trackArrayChanges = function (b) {
                function c() {
                    if (!d) {
                        d = !0; var c = b.notifySubscribers; b.notifySubscribers =
                        function (a, b) { b && b !== I || ++g; return c.apply(this, arguments) }; var m = [].concat(b.t() || []); e = null; b.T(function (c) { c = [].concat(c || []); if (b.cb(J)) { var d; if (!e || 1 < g) e = a.a.ra(m, c, { sparse: !0 }); d = e; d.length && b.notifySubscribers(d, J) } m = c; e = null; g = 0 })
                    }
                } if (!b.Xa) {
                    var d = !1, e = null, g = 0, h = b.T; b.T = b.subscribe = function (a, b, f) { f === J && c(); return h.apply(this, arguments) }; b.Xa = function (a, b, c) {
                        function p(a, b, c) { h.push({ status: a, value: b, index: c }) } if (d && !g) {
                            var h = [], l = a.length, n = c.length, r = 0; switch (b) {
                                case "push": r = l; case "unshift": for (b =
                                0; b < n; b++) p("added", c[b], r + b); break; case "pop": r = l - 1; case "shift": l && p("deleted", a[r], r); break; case "splice": b = Math.min(Math.max(0, 0 > c[0] ? l + c[0] : c[0]), l); for (var l = 1 === n ? l : Math.min(b + (c[1] || 0), l), n = b + n - 2, r = Math.max(l, n), v = 2; b < r; ++b, ++v) b < l && p("deleted", a[b], b), b < n && p("added", c[v], b); break; default: return
                            } e = h
                        }
                    }
                }
            }; a.h = function (b, c, d) {
                function e() { a.a.n(z, function (a) { a.B() }); z = [] } function g() { var a = k.throttleEvaluation; a && 0 <= a ? (clearTimeout(x), x = setTimeout(h, a)) : h() } function h() {
                    if (!s) {
                        if (E && E()) {
                            if (!l) {
                                D();
                                p = !0; return
                            }
                        } else l = !1; s = !0; try { var b = a.a.ha(z, function (a) { return a.target }); a.i.Wa(function (c) { var d; 0 <= (d = a.a.l(b, c)) ? b[d] = q : z.push(c.T(g)) }); for (var d = c ? n.call(c) : n(), e = b.length - 1; 0 <= e; e--) b[e] && z.splice(e, 1)[0].B(); p = !0; k.equalityComparer && k.equalityComparer(f, d) || (k.notifySubscribers(f, "beforeChange"), f = d, k.notifySubscribers(f)) } finally { a.i.end(), s = !1 } z.length || D()
                    }
                } function k() {
                    if (0 < arguments.length) {
                        if ("function" === typeof r) r.apply(c, arguments); else throw Error("Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.");
                        return this
                    } p || h(); a.i.lb(k); return f
                } function m() { return !p || 0 < z.length } var f, p = !1, s = !1, l = !1, n = b; n && "object" == typeof n ? (d = n, n = d.read) : (d = d || {}, n || (n = d.read)); if ("function" != typeof n) throw Error("Pass a function that returns the value of the ko.computed"); var r = d.write, v = d.disposeWhenNodeIsRemoved || d.I || null, t = d.disposeWhen || d.ua, E = t, D = e, z = [], x = null; c || (c = d.owner); k.t = function () { p || h(); return f }; k.Kb = function () { return z.length }; k.Nb = "function" === typeof d.write; k.B = function () { D() }; k.aa = m; a.ca.call(k);
                a.a.extend(k, a.h.fn); a.s(k, "peek", k.t); a.s(k, "dispose", k.B); a.s(k, "isActive", k.aa); a.s(k, "getDependenciesCount", k.Kb); v && (l = !0, v.nodeType && (E = function () { return !a.a.va(v) || t && t() })); !0 !== d.deferEvaluation && h(); v && m() && (D = function () { a.a.C.mb(v, D); e() }, a.a.C.ea(v, D)); return k
            }; a.Pb = function (b) { return a.ya(b, a.h) }; F = a.q.Yb; a.h[F] = a.q; a.h.fn = { equalityComparer: G }; a.h.fn[F] = a.h; a.b("dependentObservable", a.h); a.b("computed", a.h); a.b("isComputed", a.Pb); (function () {
                function b(a, g, h) {
                    h = h || new d; a = g(a); if ("object" !=
                    typeof a || null === a || a === q || a instanceof Date || a instanceof String || a instanceof Number || a instanceof Boolean) return a; var k = a instanceof Array ? [] : {}; h.save(a, k); c(a, function (c) { var d = g(a[c]); switch (typeof d) { case "boolean": case "number": case "string": case "function": k[c] = d; break; case "object": case "undefined": var p = h.get(d); k[c] = p !== q ? p : b(d, g, h) } }); return k
                } function c(a, b) { if (a instanceof Array) { for (var c = 0; c < a.length; c++) b(c); "function" == typeof a.toJSON && b("toJSON") } else for (c in a) b(c) } function d() {
                    this.keys =
                    []; this.Qa = []
                } a.tb = function (c) { if (0 == arguments.length) throw Error("When calling ko.toJS, pass the object you want to convert."); return b(c, function (b) { for (var c = 0; a.M(b) && 10 > c; c++) b = b(); return b }) }; a.toJSON = function (b, c, d) { b = a.tb(b); return a.a.Na(b, c, d) }; d.prototype = { save: function (b, c) { var d = a.a.l(this.keys, b); 0 <= d ? this.Qa[d] = c : (this.keys.push(b), this.Qa.push(c)) }, get: function (b) { b = a.a.l(this.keys, b); return 0 <= b ? this.Qa[b] : q } }
            })(); a.b("toJS", a.tb); a.b("toJSON", a.toJSON); (function () {
                a.k = {
                    o: function (b) {
                        switch (a.a.v(b)) {
                            case "option": return !0 ===
                            b.__ko__hasDomDataOptionValue__ ? a.a.f.get(b, a.d.options.Ea) : 7 >= a.a.ja ? b.getAttributeNode("value") && b.getAttributeNode("value").specified ? b.value : b.text : b.value; case "select": return 0 <= b.selectedIndex ? a.k.o(b.options[b.selectedIndex]) : q; default: return b.value
                        }
                    }, na: function (b, c) {
                        switch (a.a.v(b)) {
                            case "option": switch (typeof c) {
                                case "string": a.a.f.set(b, a.d.options.Ea, q); "__ko__hasDomDataOptionValue__" in b && delete b.__ko__hasDomDataOptionValue__; b.value = c; break; default: a.a.f.set(b, a.d.options.Ea, c), b.__ko__hasDomDataOptionValue__ =
                                !0, b.value = "number" === typeof c ? c : ""
                            } break; case "select": "" === c && (c = q); if (null === c || c === q) b.selectedIndex = -1; for (var d = b.options.length - 1; 0 <= d; d--) if (a.k.o(b.options[d]) == c) { b.selectedIndex = d; break } 1 < b.size || -1 !== b.selectedIndex || (b.selectedIndex = 0); break; default: if (null === c || c === q) c = ""; b.value = c
                        }
                    }
                }
            })(); a.b("selectExtensions", a.k); a.b("selectExtensions.readValue", a.k.o); a.b("selectExtensions.writeValue", a.k.na); a.g = function () {
                function b(b) {
                    b = a.a.la(b); 123 === b.charCodeAt(0) && (b = b.slice(1, -1)); var c =
                    [], d = b.match(e), k, l, n = 0; if (d) { d.push(","); for (var r = 0, v; v = d[r]; ++r) { var t = v.charCodeAt(0); if (44 === t) { if (0 >= n) { k && c.push(l ? { key: k, value: l.join("") } : { unknown: k }); k = l = n = 0; continue } } else if (58 === t) { if (!l) continue } else if (47 === t && r && 1 < v.length) (t = d[r - 1].match(g)) && !h[t[0]] && (b = b.substr(b.indexOf(v) + 1), d = b.match(e), d.push(","), r = -1, v = "/"); else if (40 === t || 123 === t || 91 === t)++n; else if (41 === t || 125 === t || 93 === t)--n; else if (!k && !l) { k = 34 === t || 39 === t ? v.slice(1, -1) : v; continue } l ? l.push(v) : l = [v] } } return c
                } var c = ["true",
                "false", "null", "undefined"], d = /^(?:[$_a-z][$\w]*|(.+)(\.\s*[$_a-z][$\w]*|\[.+\]))$/i, e = RegExp("\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*'|/(?:[^/\\\\]|\\\\.)*/w*|[^\\s:,/][^,\"'{}()/:[\\]]*[^\\s,\"'{}()/:[\\]]|[^\\s]", "g"), g = /[\])"'A-Za-z0-9_$]+$/, h = { "in": 1, "return": 1, "typeof": 1 }, k = {}; return {
                    Y: [], U: k, Ga: b, ka: function (e, f) {
                        function g(b, f) {
                            var e, r = a.getBindingHandler(b); if (r && r.preprocess ? f = r.preprocess(f, b, g) : 1) {
                                if (r = k[b]) e = f, 0 <= a.a.l(c, e) ? e = !1 : (r = e.match(d), e = null === r ? !1 : r[1] ? "Object(" + r[1] + ")" +
                                r[2] : e), r = e; r && l.push("'" + b + "':function(_z){" + e + "=_z}"); n && (f = "function(){return " + f + " }"); h.push("'" + b + "':" + f)
                            }
                        } f = f || {}; var h = [], l = [], n = f.valueAccessors, r = "string" === typeof e ? b(e) : e; a.a.n(r, function (a) { g(a.key || a.unknown, a.value) }); l.length && g("_ko_property_writers", "{" + l.join(",") + "}"); return h.join(",")
                    }, Sb: function (a, b) { for (var c = 0; c < a.length; c++) if (a[c].key == b) return !0; return !1 }, oa: function (b, c, d, e, k) { if (b && a.M(b)) !a.gb(b) || k && b.t() === e || b(e); else if ((b = c.get("_ko_property_writers")) && b[d]) b[d](e) }
                }
            }();
            a.b("expressionRewriting", a.g); a.b("expressionRewriting.bindingRewriteValidators", a.g.Y); a.b("expressionRewriting.parseObjectLiteral", a.g.Ga); a.b("expressionRewriting.preProcessBindings", a.g.ka); a.b("expressionRewriting._twoWayBindings", a.g.U); a.b("jsonExpressionRewriting", a.g); a.b("jsonExpressionRewriting.insertPropertyAccessorsIntoJson", a.g.ka); (function () {
                function b(a) { return 8 == a.nodeType && h.test(g ? a.text : a.nodeValue) } function c(a) { return 8 == a.nodeType && k.test(g ? a.text : a.nodeValue) } function d(a,
                d) { for (var e = a, k = 1, n = []; e = e.nextSibling;) { if (c(e) && (k--, 0 === k)) return n; n.push(e); b(e) && k++ } if (!d) throw Error("Cannot find closing comment tag to match: " + a.nodeValue); return null } function e(a, b) { var c = d(a, b); return c ? 0 < c.length ? c[c.length - 1].nextSibling : a.nextSibling : null } var g = w && "\x3c!--test--\x3e" === w.createComment("test").text, h = g ? /^\x3c!--\s*ko(?:\s+([\s\S]+))?\s*--\x3e$/ : /^\s*ko(?:\s+([\s\S]+))?\s*$/, k = g ? /^\x3c!--\s*\/ko\s*--\x3e$/ : /^\s*\/ko\s*$/, m = { ul: !0, ol: !0 }; a.e = {
                    P: {}, childNodes: function (a) {
                        return b(a) ?
                        d(a) : a.childNodes
                    }, Z: function (c) { if (b(c)) { c = a.e.childNodes(c); for (var d = 0, e = c.length; d < e; d++) a.removeNode(c[d]) } else a.a.wa(c) }, S: function (c, d) { if (b(c)) { a.e.Z(c); for (var e = c.nextSibling, k = 0, n = d.length; k < n; k++) e.parentNode.insertBefore(d[k], e) } else a.a.S(c, d) }, kb: function (a, c) { b(a) ? a.parentNode.insertBefore(c, a.nextSibling) : a.firstChild ? a.insertBefore(c, a.firstChild) : a.appendChild(c) }, eb: function (c, d, e) {
                        e ? b(c) ? c.parentNode.insertBefore(d, e.nextSibling) : e.nextSibling ? c.insertBefore(d, e.nextSibling) :
                        c.appendChild(d) : a.e.kb(c, d)
                    }, firstChild: function (a) { return b(a) ? !a.nextSibling || c(a.nextSibling) ? null : a.nextSibling : a.firstChild }, nextSibling: function (a) { b(a) && (a = e(a)); return a.nextSibling && c(a.nextSibling) ? null : a.nextSibling }, Mb: b, bc: function (a) { return (a = (g ? a.text : a.nodeValue).match(h)) ? a[1] : null }, ib: function (d) {
                        if (m[a.a.v(d)]) {
                            var k = d.firstChild; if (k) {
                                do if (1 === k.nodeType) {
                                    var g; g = k.firstChild; var h = null; if (g) {
                                        do if (h) h.push(g); else if (b(g)) { var n = e(g, !0); n ? g = n : h = [g] } else c(g) && (h = [g]); while (g =
                                        g.nextSibling)
                                    } if (g = h) for (h = k.nextSibling, n = 0; n < g.length; n++) h ? d.insertBefore(g[n], h) : d.appendChild(g[n])
                                } while (k = k.nextSibling)
                            }
                        }
                    }
                }
            })(); a.b("virtualElements", a.e); a.b("virtualElements.allowedBindings", a.e.P); a.b("virtualElements.emptyNode", a.e.Z); a.b("virtualElements.insertAfter", a.e.eb); a.b("virtualElements.prepend", a.e.kb); a.b("virtualElements.setDomNodeChildren", a.e.S); (function () {
                a.H = function () { this.zb = {} }; a.a.extend(a.H.prototype, {
                    nodeHasBindings: function (b) {
                        switch (b.nodeType) {
                            case 1: return null !=
                            b.getAttribute("data-bind"); case 8: return a.e.Mb(b); default: return !1
                        }
                    }, getBindings: function (a, c) { var d = this.getBindingsString(a, c); return d ? this.parseBindingsString(d, c, a) : null }, getBindingAccessors: function (a, c) { var d = this.getBindingsString(a, c); return d ? this.parseBindingsString(d, c, a, { valueAccessors: !0 }) : null }, getBindingsString: function (b) { switch (b.nodeType) { case 1: return b.getAttribute("data-bind"); case 8: return a.e.bc(b); default: return null } }, parseBindingsString: function (b, c, d, e) {
                        try {
                            var g = this.zb,
                            h = b + (e && e.valueAccessors || ""), k; if (!(k = g[h])) { var m, f = "with($context){with($data||{}){return{" + a.g.ka(b, e) + "}}}"; m = new Function("$context", "$element", f); k = g[h] = m } return k(c, d)
                        } catch (p) { throw p.message = "Unable to parse bindings.\nBindings value: " + b + "\nMessage: " + p.message, p; }
                    }
                }); a.H.instance = new a.H
            })(); a.b("bindingProvider", a.H); (function () {
                function b(a) { return function () { return a } } function c(a) { return a() } function d(b) { return a.a.Da(a.i.p(b), function (a, c) { return function () { return b()[c] } }) } function e(a,
                b) { return d(this.getBindings.bind(this, a, b)) } function g(b, c, d) { var f, e = a.e.firstChild(c), k = a.H.instance, g = k.preprocessNode; if (g) { for (; f = e;) e = a.e.nextSibling(f), g.call(k, f); e = a.e.firstChild(c) } for (; f = e;) e = a.e.nextSibling(f), h(b, f, d) } function h(b, c, d) { var f = !0, e = 1 === c.nodeType; e && a.e.ib(c); if (e && d || a.H.instance.nodeHasBindings(c)) f = m(c, null, b, d).shouldBindDescendants; f && !p[a.a.v(c)] && g(b, c, !e) } function k(b) {
                    var c = [], d = {}, f = []; a.a.K(b, function D(e) {
                        if (!d[e]) {
                            var k = a.getBindingHandler(e); k && (k.after &&
                            (f.push(e), a.a.n(k.after, function (c) { if (b[c]) { if (-1 !== a.a.l(f, c)) throw Error("Cannot combine the following bindings, because they have a cyclic dependency: " + f.join(", ")); D(c) } }), f.pop()), c.push({ key: e, bb: k })); d[e] = !0
                        }
                    }); return c
                } function m(b, d, f, g) {
                    var h = a.a.f.get(b, s); if (!d) { if (h) throw Error("You cannot apply bindings multiple times to the same element."); a.a.f.set(b, s, !0) } !h && g && a.rb(b, f); var m; if (d && "function" !== typeof d) m = d; else {
                        var p = a.H.instance, l = p.getBindingAccessors || e; if (d || f.A) {
                            var A =
                            a.h(function () { (m = d ? d(f, b) : l.call(p, b, f)) && f.A && f.A(); return m }, null, { I: b }); m && A.aa() || (A = null)
                        } else m = a.i.p(l, p, [b, f])
                    } var u; if (m) {
                        var w = A ? function (a) { return function () { return c(A()[a]) } } : function (a) { return m[a] }, y = function () { return a.a.Da(A ? A() : m, c) }; y.get = function (a) { return m[a] && c(w(a)) }; y.has = function (a) { return a in m }; g = k(m); a.a.n(g, function (c) {
                            var d = c.bb.init, e = c.bb.update, k = c.key; if (8 === b.nodeType && !a.e.P[k]) throw Error("The binding '" + k + "' cannot be used with virtual elements"); try {
                                "function" ==
                                typeof d && a.i.p(function () { var a = d(b, w(k), y, f.$data, f); if (a && a.controlsDescendantBindings) { if (u !== q) throw Error("Multiple bindings (" + u + " and " + k + ") are trying to control descendant bindings of the same element. You cannot use these bindings together on the same element."); u = k } }), "function" == typeof e && a.h(function () { e(b, w(k), y, f.$data, f) }, null, { I: b })
                            } catch (g) { throw g.message = 'Unable to process binding "' + k + ": " + m[k] + '"\nMessage: ' + g.message, g; }
                        })
                    } return { shouldBindDescendants: u === q }
                } function f(b) {
                    return b &&
                    b instanceof a.G ? b : new a.G(b)
                } a.d = {}; var p = { script: !0 }; a.getBindingHandler = function (b) { return a.d[b] }; a.G = function (b, c, d, f) {
                    var e = this, k = "function" == typeof b, g, h = a.h(function () { var g = k ? b() : b; c ? (c.A && c.A(), a.a.extend(e, c), h && (e.A = h)) : (e.$parents = [], e.$root = g, e.ko = a); e.$rawData = b; e.$data = g; d && (e[d] = g); f && f(e, c, g); return e.$data }, null, { ua: function () { return g && !a.a.Ra(g) }, I: !0 }); h.aa() && (e.A = h, h.equalityComparer = null, g = [], h.wb = function (b) {
                        g.push(b); a.a.C.ea(b, function (b) {
                            a.a.ia(g, b); g.length || (h.B(),
                            e.A = h = q)
                        })
                    })
                }; a.G.prototype.createChildContext = function (b, c, d) { return new a.G(b, this, c, function (a, b) { a.$parentContext = b; a.$parent = b.$data; a.$parents = (b.$parents || []).slice(0); a.$parents.unshift(a.$parent); d && d(a) }) }; a.G.prototype.extend = function (b) { return new a.G(this.$rawData, this, null, function (c) { a.a.extend(c, "function" == typeof b ? b() : b) }) }; var s = a.a.f.D(), l = a.a.f.D(); a.rb = function (b, c) { if (2 == arguments.length) a.a.f.set(b, l, c), c.A && c.A.wb(b); else return a.a.f.get(b, l) }; a.pa = function (b, c, d) {
                    1 === b.nodeType &&
                    a.e.ib(b); return m(b, c, f(d), !0)
                }; a.xb = function (c, e, k) { k = f(k); return a.pa(c, "function" === typeof e ? d(e.bind(null, k, c)) : a.a.Da(e, b), k) }; a.Ta = function (a, b) { 1 !== b.nodeType && 8 !== b.nodeType || g(f(a), b, !0) }; a.Sa = function (a, b) { if (b && 1 !== b.nodeType && 8 !== b.nodeType) throw Error("ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node"); b = b || y.document.body; h(f(a), b, !0) }; a.ta = function (b) { switch (b.nodeType) { case 1: case 8: var c = a.rb(b); if (c) return c; if (b.parentNode) return a.ta(b.parentNode) } return q };
                a.Cb = function (b) { return (b = a.ta(b)) ? b.$data : q }; a.b("bindingHandlers", a.d); a.b("applyBindings", a.Sa); a.b("applyBindingsToDescendants", a.Ta); a.b("applyBindingAccessorsToNode", a.pa); a.b("applyBindingsToNode", a.xb); a.b("contextFor", a.ta); a.b("dataFor", a.Cb)
            })(); var M = { "class": "className", "for": "htmlFor" }; a.d.attr = {
                update: function (b, c) {
                    var d = a.a.c(c()) || {}; a.a.K(d, function (c, d) {
                        d = a.a.c(d); var h = !1 === d || null === d || d === q; h && b.removeAttribute(c); 8 >= a.a.ja && c in M ? (c = M[c], h ? b.removeAttribute(c) : b[c] = d) : h || b.setAttribute(c,
                        d.toString()); "name" === c && a.a.pb(b, h ? "" : d.toString())
                    })
                }
            }; (function () {
                a.d.checked = {
                    after: ["value", "attr"], init: function (b, c, d) {
                        function e() { return d.has("checkedValue") ? a.a.c(d.get("checkedValue")) : b.value } function g() { var k = b.checked, g = s ? e() : k; if (l && (!m || k)) { var h = a.i.p(c); f ? p !== g ? (k && (a.a.V(h, g, !0), a.a.V(h, p, !1)), p = g) : a.a.V(h, g, k) : a.g.oa(h, d, "checked", g, !0) } } function h() { var d = a.a.c(c()); b.checked = f ? 0 <= a.a.l(d, e()) : k ? d : e() === d } var k = "checkbox" == b.type, m = "radio" == b.type; if (k || m) {
                            var f = k && a.a.c(c()) instanceof
                            Array, p = f ? e() : q, s = m || f, l = !1; m && !b.name && a.d.uniqueName.init(b, function () { return !0 }); a.h(g, null, { I: b }); a.a.r(b, "click", g); a.h(h, null, { I: b }); l = !0
                        }
                    }
                }; a.g.U.checked = !0; a.d.checkedValue = { update: function (b, c) { b.value = a.a.c(c()) } }
            })(); a.d.css = { update: function (b, c) { var d = a.a.c(c()); "object" == typeof d ? a.a.K(d, function (c, d) { d = a.a.c(d); a.a.ma(b, c, d) }) : (d = String(d || ""), a.a.ma(b, b.__ko__cssValue, !1), b.__ko__cssValue = d, a.a.ma(b, d, !0)) } }; a.d.enable = {
                update: function (b, c) {
                    var d = a.a.c(c()); d && b.disabled ? b.removeAttribute("disabled") :
                    d || b.disabled || (b.disabled = !0)
                }
            }; a.d.disable = { update: function (b, c) { a.d.enable.update(b, function () { return !a.a.c(c()) }) } }; a.d.event = { init: function (b, c, d, e, g) { var h = c() || {}; a.a.K(h, function (k) { "string" == typeof k && a.a.r(b, k, function (b) { var f, h = c()[k]; if (h) { try { var s = a.a.Q(arguments); e = g.$data; s.unshift(e); f = h.apply(e, s) } finally { !0 !== f && (b.preventDefault ? b.preventDefault() : b.returnValue = !1) } !1 === d.get(k + "Bubble") && (b.cancelBubble = !0, b.stopPropagation && b.stopPropagation()) } }) }) } }; a.d.foreach = {
                hb: function (b) {
                    return function () {
                        var c =
                        b(), d = a.a.Ha(c); if (!d || "number" == typeof d.length) return { foreach: c, templateEngine: a.J.Aa }; a.a.c(c); return { foreach: d.data, as: d.as, includeDestroyed: d.includeDestroyed, afterAdd: d.afterAdd, beforeRemove: d.beforeRemove, afterRender: d.afterRender, beforeMove: d.beforeMove, afterMove: d.afterMove, templateEngine: a.J.Aa }
                    }
                }, init: function (b, c) { return a.d.template.init(b, a.d.foreach.hb(c)) }, update: function (b, c, d, e, g) { return a.d.template.update(b, a.d.foreach.hb(c), d, e, g) }
            }; a.g.Y.foreach = !1; a.e.P.foreach = !0; a.d.hasfocus =
            {
                init: function (b, c, d) { function e(e) { b.__ko_hasfocusUpdating = !0; var g = b.ownerDocument; if ("activeElement" in g) { var f; try { f = g.activeElement } catch (h) { f = g.body } e = f === b } g = c(); a.g.oa(g, d, "hasfocus", e, !0); b.__ko_hasfocusLastValue = e; b.__ko_hasfocusUpdating = !1 } var g = e.bind(null, !0), h = e.bind(null, !1); a.a.r(b, "focus", g); a.a.r(b, "focusin", g); a.a.r(b, "blur", h); a.a.r(b, "focusout", h) }, update: function (b, c) {
                    var d = !!a.a.c(c()); b.__ko_hasfocusUpdating || b.__ko_hasfocusLastValue === d || (d ? b.focus() : b.blur(), a.i.p(a.a.da,
                    null, [b, d ? "focusin" : "focusout"]))
                }
            }; a.g.U.hasfocus = !0; a.d.hasFocus = a.d.hasfocus; a.g.U.hasFocus = !0; a.d.html = { init: function () { return { controlsDescendantBindings: !0 } }, update: function (b, c) { a.a.Ka(b, c()) } }; var L = a.a.f.D(); H("if"); H("ifnot", !1, !0); H("with", !0, !1, function (a, c) { return a.createChildContext(c) }); a.d.options = {
                init: function (b) { if ("select" !== a.a.v(b)) throw Error("options binding applies only to SELECT elements"); for (; 0 < b.length;) b.remove(0); return { controlsDescendantBindings: !0 } }, update: function (b,
                c, d) {
                    function e() { return a.a.ga(b.options, function (a) { return a.selected }) } function g(a, b, c) { var d = typeof b; return "function" == d ? b(a) : "string" == d ? a[b] : c } function h(c, d) { if (p.length) { var f = 0 <= a.a.l(p, a.k.o(d[0])); a.a.qb(d[0], f); l && !f && a.i.p(a.a.da, null, [b, "change"]) } } var k = 0 != b.length && b.multiple ? b.scrollTop : null; c = a.a.c(c()); var m = d.get("optionsIncludeDestroyed"), f = {}, p; p = b.multiple ? a.a.ha(e(), a.k.o) : 0 <= b.selectedIndex ? [a.k.o(b.options[b.selectedIndex])] : []; if (c) {
                        "undefined" == typeof c.length && (c = [c]);
                        var s = a.a.ga(c, function (b) { return m || b === q || null === b || !a.a.c(b._destroy) }); d.has("optionsCaption") && (c = a.a.c(d.get("optionsCaption")), null !== c && c !== q && s.unshift(f))
                    } else c = []; var l = !1; c = h; d.has("optionsAfterRender") && (c = function (b, c) { h(0, c); a.i.p(d.get("optionsAfterRender"), null, [c[0], b !== f ? b : q]) }); a.a.Ja(b, s, function (b, c, e) {
                        e.length && (p = e[0].selected ? [a.k.o(e[0])] : [], l = !0); c = w.createElement("option"); b === f ? (a.a.Ma(c, d.get("optionsCaption")), a.k.na(c, q)) : (e = g(b, d.get("optionsValue"), b), a.k.na(c, a.a.c(e)),
                        b = g(b, d.get("optionsText"), e), a.a.Ma(c, b)); return [c]
                    }, null, c); (b.multiple ? p.length && e().length < p.length : p.length && 0 <= b.selectedIndex ? a.k.o(b.options[b.selectedIndex]) !== p[0] : p.length || 0 <= b.selectedIndex) && a.i.p(a.a.da, null, [b, "change"]); a.a.Hb(b); k && 20 < Math.abs(k - b.scrollTop) && (b.scrollTop = k)
                }
            }; a.d.options.Ea = a.a.f.D(); a.d.selectedOptions = {
                after: ["options", "foreach"], init: function (b, c, d) {
                    a.a.r(b, "change", function () {
                        var e = c(), g = []; a.a.n(b.getElementsByTagName("option"), function (b) { b.selected && g.push(a.k.o(b)) });
                        a.g.oa(e, d, "selectedOptions", g)
                    })
                }, update: function (b, c) { if ("select" != a.a.v(b)) throw Error("values binding applies only to SELECT elements"); var d = a.a.c(c()); d && "number" == typeof d.length && a.a.n(b.getElementsByTagName("option"), function (b) { var c = 0 <= a.a.l(d, a.k.o(b)); a.a.qb(b, c) }) }
            }; a.g.U.selectedOptions = !0; a.d.style = { update: function (b, c) { var d = a.a.c(c() || {}); a.a.K(d, function (c, d) { d = a.a.c(d); b.style[c] = d || "" }) } }; a.d.submit = {
                init: function (b, c, d, e, g) {
                    if ("function" != typeof c()) throw Error("The value for a submit binding must be a function");
                    a.a.r(b, "submit", function (a) { var d, e = c(); try { d = e.call(g.$data, b) } finally { !0 !== d && (a.preventDefault ? a.preventDefault() : a.returnValue = !1) } })
                }
            }; a.d.text = { init: function () { return { controlsDescendantBindings: !0 } }, update: function (b, c) { a.a.Ma(b, c()) } }; a.e.P.text = !0; a.d.uniqueName = { init: function (b, c) { if (c()) { var d = "ko_unique_" + ++a.d.uniqueName.Bb; a.a.pb(b, d) } } }; a.d.uniqueName.Bb = 0; a.d.value = {
                after: ["options", "foreach"], init: function (b, c, d) {
                    function e() { k = !1; var e = c(), f = a.k.o(b); a.g.oa(e, d, "value", f) } var g =
                    ["change"], h = d.get("valueUpdate"), k = !1; h && ("string" == typeof h && (h = [h]), a.a.X(g, h), g = a.a.Va(g)); !a.a.ja || "input" != b.tagName.toLowerCase() || "text" != b.type || "off" == b.autocomplete || b.form && "off" == b.form.autocomplete || -1 != a.a.l(g, "propertychange") || (a.a.r(b, "propertychange", function () { k = !0 }), a.a.r(b, "blur", function () { k && e() })); a.a.n(g, function (c) { var d = e; a.a.ac(c, "after") && (d = function () { setTimeout(e, 0) }, c = c.substring(5)); a.a.r(b, c, d) })
                }, update: function (b, c) {
                    var d = "select" === a.a.v(b), e = a.a.c(c()), g = a.k.o(b);
                    e !== g && (g = function () { a.k.na(b, e) }, g(), d && (e !== a.k.o(b) ? a.i.p(a.a.da, null, [b, "change"]) : setTimeout(g, 0)))
                }
            }; a.g.U.value = !0; a.d.visible = { update: function (b, c) { var d = a.a.c(c()), e = "none" != b.style.display; d && !e ? b.style.display = "" : !d && e && (b.style.display = "none") } }; (function (b) { a.d[b] = { init: function (c, d, e, g, h) { return a.d.event.init.call(this, c, function () { var a = {}; a[b] = d(); return a }, e, g, h) } } })("click"); a.w = function () { }; a.w.prototype.renderTemplateSource = function () {
                throw Error("Override renderTemplateSource");
            }; a.w.prototype.createJavaScriptEvaluatorBlock = function () { throw Error("Override createJavaScriptEvaluatorBlock"); }; a.w.prototype.makeTemplateSource = function (b, c) { if ("string" == typeof b) { c = c || w; var d = c.getElementById(b); if (!d) throw Error("Cannot find template with ID " + b); return new a.m.j(d) } if (1 == b.nodeType || 8 == b.nodeType) return new a.m.W(b); throw Error("Unknown template type: " + b); }; a.w.prototype.renderTemplate = function (a, c, d, e) {
                a = this.makeTemplateSource(a, e); return this.renderTemplateSource(a, c,
                d)
            }; a.w.prototype.isTemplateRewritten = function (a, c) { return !1 === this.allowTemplateRewriting ? !0 : this.makeTemplateSource(a, c).data("isRewritten") }; a.w.prototype.rewriteTemplate = function (a, c, d) { a = this.makeTemplateSource(a, d); c = c(a.text()); a.text(c); a.data("isRewritten", !0) }; a.b("templateEngine", a.w); a.Oa = function () {
                function b(b, c, d, k) {
                    b = a.g.Ga(b); for (var m = a.g.Y, f = 0; f < b.length; f++) {
                        var p = b[f].key; if (m.hasOwnProperty(p)) {
                            var s = m[p]; if ("function" === typeof s) { if (p = s(b[f].value)) throw Error(p); } else if (!s) throw Error("This template engine does not support the '" +
                            p + "' binding within its templates");
                        }
                    } d = "ko.__tr_ambtns(function($context,$element){return(function(){return{ " + a.g.ka(b, { valueAccessors: !0 }) + " } })()},'" + d.toLowerCase() + "')"; return k.createJavaScriptEvaluatorBlock(d) + c
                } var c = /(<([a-z]+\d*)(?:\s+(?!data-bind\s*=\s*)[a-z0-9\-]+(?:=(?:\"[^\"]*\"|\'[^\']*\'))?)*\s+)data-bind\s*=\s*(["'])([\s\S]*?)\3/gi, d = /\x3c!--\s*ko\b\s*([\s\S]*?)\s*--\x3e/g; return {
                    Ib: function (b, c, d) {
                        c.isTemplateRewritten(b, d) || c.rewriteTemplate(b, function (b) { return a.Oa.Ub(b, c) },
                        d)
                    }, Ub: function (a, g) { return a.replace(c, function (a, c, d, f, e) { return b(e, c, d, g) }).replace(d, function (a, c) { return b(c, "\x3c!-- ko --\x3e", "#comment", g) }) }, yb: function (b, c) { return a.u.Ca(function (d, k) { var m = d.nextSibling; m && m.nodeName.toLowerCase() === c && a.pa(m, b, k) }) }
                }
            }(); a.b("__tr_ambtns", a.Oa.yb); (function () {
                a.m = {}; a.m.j = function (a) { this.j = a }; a.m.j.prototype.text = function () {
                    var b = a.a.v(this.j), b = "script" === b ? "text" : "textarea" === b ? "value" : "innerHTML"; if (0 == arguments.length) return this.j[b]; var c = arguments[0];
                    "innerHTML" === b ? a.a.Ka(this.j, c) : this.j[b] = c
                }; var b = a.a.f.D() + "_"; a.m.j.prototype.data = function (c) { if (1 === arguments.length) return a.a.f.get(this.j, b + c); a.a.f.set(this.j, b + c, arguments[1]) }; var c = a.a.f.D(); a.m.W = function (a) { this.j = a }; a.m.W.prototype = new a.m.j; a.m.W.prototype.text = function () { if (0 == arguments.length) { var b = a.a.f.get(this.j, c) || {}; b.Pa === q && b.sa && (b.Pa = b.sa.innerHTML); return b.Pa } a.a.f.set(this.j, c, { Pa: arguments[0] }) }; a.m.j.prototype.nodes = function () {
                    if (0 == arguments.length) return (a.a.f.get(this.j,
                    c) || {}).sa; a.a.f.set(this.j, c, { sa: arguments[0] })
                }; a.b("templateSources", a.m); a.b("templateSources.domElement", a.m.j); a.b("templateSources.anonymousTemplate", a.m.W)
            })(); (function () {
                function b(b, c, d) { var e; for (c = a.e.nextSibling(c) ; b && (e = b) !== c;) b = a.e.nextSibling(e), d(e, b) } function c(c, d) {
                    if (c.length) {
                        var f = c[0], e = c[c.length - 1], g = f.parentNode, h = a.H.instance, n = h.preprocessNode; if (n) {
                            b(f, e, function (a, b) { var c = a.previousSibling, d = n.call(h, a); d && (a === f && (f = d[0] || b), a === e && (e = d[d.length - 1] || c)) }); c.length =
                            0; if (!f) return; f === e ? c.push(f) : (c.push(f, e), a.a.$(c, g))
                        } b(f, e, function (b) { 1 !== b.nodeType && 8 !== b.nodeType || a.Sa(d, b) }); b(f, e, function (b) { 1 !== b.nodeType && 8 !== b.nodeType || a.u.vb(b, [d]) }); a.a.$(c, g)
                    }
                } function d(a) { return a.nodeType ? a : 0 < a.length ? a[0] : null } function e(b, e, f, h, s) {
                    s = s || {}; var l = b && d(b), l = l && l.ownerDocument, n = s.templateEngine || g; a.Oa.Ib(f, n, l); f = n.renderTemplate(f, h, s, l); if ("number" != typeof f.length || 0 < f.length && "number" != typeof f[0].nodeType) throw Error("Template engine must return an array of DOM nodes");
                    l = !1; switch (e) { case "replaceChildren": a.e.S(b, f); l = !0; break; case "replaceNode": a.a.nb(b, f); l = !0; break; case "ignoreTargetNode": break; default: throw Error("Unknown renderMode: " + e); } l && (c(f, h), s.afterRender && a.i.p(s.afterRender, null, [f, h.$data])); return f
                } var g; a.La = function (b) { if (b != q && !(b instanceof a.w)) throw Error("templateEngine must inherit from ko.templateEngine"); g = b }; a.Ia = function (b, c, f, h, s) {
                    f = f || {}; if ((f.templateEngine || g) == q) throw Error("Set a template engine before calling renderTemplate");
                    s = s || "replaceChildren"; if (h) { var l = d(h); return a.h(function () { var g = c && c instanceof a.G ? c : new a.G(a.a.c(c)), r = "function" == typeof b ? b(g.$data, g) : b, g = e(h, s, r, g, f); "replaceNode" == s && (h = g, l = d(h)) }, null, { ua: function () { return !l || !a.a.va(l) }, I: l && "replaceNode" == s ? l.parentNode : l }) } return a.u.Ca(function (d) { a.Ia(b, c, f, d, "replaceNode") })
                }; a.$b = function (b, d, f, g, h) {
                    function l(a, b) { c(b, r); f.afterRender && f.afterRender(b, a) } function n(a, c) {
                        r = h.createChildContext(a, f.as, function (a) { a.$index = c }); var d = "function" ==
                        typeof b ? b(a, r) : b; return e(null, "ignoreTargetNode", d, r, f)
                    } var r; return a.h(function () { var b = a.a.c(d) || []; "undefined" == typeof b.length && (b = [b]); b = a.a.ga(b, function (b) { return f.includeDestroyed || b === q || null === b || !a.a.c(b._destroy) }); a.i.p(a.a.Ja, null, [g, b, n, f, l]) }, null, { I: g })
                }; var h = a.a.f.D(); a.d.template = {
                    init: function (b, c) { var d = a.a.c(c()); "string" == typeof d || d.name ? a.e.Z(b) : (d = a.e.childNodes(b), d = a.a.Vb(d), (new a.m.W(b)).nodes(d)); return { controlsDescendantBindings: !0 } }, update: function (b, c, d, e, g) {
                        c =
                        a.a.c(c()); d = {}; e = !0; var l, n = null; "string" != typeof c && (d = c, c = a.a.c(d.name), "if" in d && (e = a.a.c(d["if"])), e && "ifnot" in d && (e = !a.a.c(d.ifnot)), l = a.a.c(d.data)); "foreach" in d ? n = a.$b(c || b, e && d.foreach || [], d, b, g) : e ? (g = "data" in d ? g.createChildContext(l, d.as) : g, n = a.Ia(c || b, g, d, b)) : a.e.Z(b); g = n; (l = a.a.f.get(b, h)) && "function" == typeof l.B && l.B(); a.a.f.set(b, h, g && g.aa() ? g : q)
                    }
                }; a.g.Y.template = function (b) { b = a.g.Ga(b); return 1 == b.length && b[0].unknown || a.g.Sb(b, "name") ? null : "This template engine does not support anonymous templates nested within its templates" };
                a.e.P.template = !0
            })(); a.b("setTemplateEngine", a.La); a.b("renderTemplate", a.Ia); a.a.ra = function () {
                function a(b, d, e, g, h) {
                    var k = Math.min, m = Math.max, f = [], p, q = b.length, l, n = d.length, r = n - q || 1, v = q + n + 1, t, u, w; for (p = 0; p <= q; p++) for (u = t, f.push(t = []), w = k(n, p + r), l = m(0, p - 1) ; l <= w; l++) t[l] = l ? p ? b[p - 1] === d[l - 1] ? u[l - 1] : k(u[l] || v, t[l - 1] || v) + 1 : l + 1 : p + 1; k = []; m = []; r = []; p = q; for (l = n; p || l;) n = f[p][l] - 1, l && n === f[p][l - 1] ? m.push(k[k.length] = { status: e, value: d[--l], index: l }) : p && n === f[p - 1][l] ? r.push(k[k.length] = {
                        status: g, value: b[--p],
                        index: p
                    }) : (--l, --p, h.sparse || k.push({ status: "retained", value: d[l] })); if (m.length && r.length) { b = 10 * q; var z; for (d = e = 0; (h.dontLimitMoves || d < b) && (z = m[e]) ; e++) { for (g = 0; f = r[g]; g++) if (z.value === f.value) { z.moved = f.index; f.moved = z.index; r.splice(g, 1); d = g = 0; break } d += g } } return k.reverse()
                } return function (c, d, e) { e = "boolean" === typeof e ? { dontLimitMoves: e } : e || {}; c = c || []; d = d || []; return c.length <= d.length ? a(c, d, "added", "deleted", e) : a(d, c, "deleted", "added", e) }
            }(); a.b("utils.compareArrays", a.a.ra); (function () {
                function b(b,
                c, g, h, k) { var m = [], f = a.h(function () { var f = c(g, k, a.a.$(m, b)) || []; 0 < m.length && (a.a.nb(m, f), h && a.i.p(h, null, [g, f, k])); m.splice(0, m.length); a.a.X(m, f) }, null, { I: b, ua: function () { return !a.a.Ra(m) } }); return { R: m, h: f.aa() ? f : q } } var c = a.a.f.D(); a.a.Ja = function (d, e, g, h, k) {
                    function m(b, c) { x = s[c]; t !== c && (z[b] = x); x.za(t++); a.a.$(x.R, d); r.push(x); w.push(x) } function f(b, c) { if (b) for (var d = 0, e = c.length; d < e; d++) c[d] && a.a.n(c[d].R, function (a) { b(a, d, c[d].fa) }) } e = e || []; h = h || {}; var p = a.a.f.get(d, c) === q, s = a.a.f.get(d, c) || [],
                    l = a.a.ha(s, function (a) { return a.fa }), n = a.a.ra(l, e, h.dontLimitMoves), r = [], v = 0, t = 0, u = [], w = []; e = []; for (var z = [], l = [], x, A = 0, y, B; y = n[A]; A++) switch (B = y.moved, y.status) { case "deleted": B === q && (x = s[v], x.h && x.h.B(), u.push.apply(u, a.a.$(x.R, d)), h.beforeRemove && (e[A] = x, w.push(x))); v++; break; case "retained": m(A, v++); break; case "added": B !== q ? m(A, B) : (x = { fa: y.value, za: a.q(t++) }, r.push(x), w.push(x), p || (l[A] = x)) } f(h.beforeMove, z); a.a.n(u, h.beforeRemove ? a.L : a.removeNode); for (var A = 0, p = a.e.firstChild(d), C; x = w[A]; A++) {
                        x.R ||
                        a.a.extend(x, b(d, g, x.fa, k, x.za)); for (v = 0; n = x.R[v]; p = n.nextSibling, C = n, v++) n !== p && a.e.eb(d, n, C); !x.Ob && k && (k(x.fa, x.R, x.za), x.Ob = !0)
                    } f(h.beforeRemove, e); f(h.afterMove, z); f(h.afterAdd, l); a.a.f.set(d, c, r)
                }
            })(); a.b("utils.setDomNodeChildrenFromArrayMapping", a.a.Ja); a.J = function () { this.allowTemplateRewriting = !1 }; a.J.prototype = new a.w; a.J.prototype.renderTemplateSource = function (b) { var c = (9 > a.a.ja ? 0 : b.nodes) ? b.nodes() : null; if (c) return a.a.Q(c.cloneNode(!0).childNodes); b = b.text(); return a.a.Fa(b) }; a.J.Aa =
            new a.J; a.La(a.J.Aa); a.b("nativeTemplateEngine", a.J); (function () {
                a.Ba = function () {
                    var a = this.Rb = function () { if ("undefined" == typeof u || !u.tmpl) return 0; try { if (0 <= u.tmpl.tag.tmpl.open.toString().indexOf("__")) return 2 } catch (a) { } return 1 }(); this.renderTemplateSource = function (b, e, g) {
                        g = g || {}; if (2 > a) throw Error("Your version of jQuery.tmpl is too old. Please upgrade to jQuery.tmpl 1.0.0pre or later."); var h = b.data("precompiled"); h || (h = b.text() || "", h = u.template(null, "{{ko_with $item.koBindingContext}}" + h +
                        "{{/ko_with}}"), b.data("precompiled", h)); b = [e.$data]; e = u.extend({ koBindingContext: e }, g.templateOptions); e = u.tmpl(h, b, e); e.appendTo(w.createElement("div")); u.fragments = {}; return e
                    }; this.createJavaScriptEvaluatorBlock = function (a) { return "{{ko_code ((function() { return " + a + " })()) }}" }; this.addTemplate = function (a, b) { w.write("<script type='text/html' id='" + a + "'>" + b + "\x3c/script>") }; 0 < a && (u.tmpl.tag.ko_code = { open: "__.push($1 || '');" }, u.tmpl.tag.ko_with = { open: "with($1) {", close: "} " })
                }; a.Ba.prototype =
                new a.w; var b = new a.Ba; 0 < b.Rb && a.La(b); a.b("jqueryTmplTemplateEngine", a.Ba)
            })()
        })
    })();
})();